package com.biz.primus.ms.coupon.service;

import com.biz.primus.common.vo.SpringPageVO;
import com.biz.primus.model.coupon.vo.couponType.AppendCouponTypeIssuedCountVo;
import com.biz.primus.model.coupon.vo.couponType.CouponTypeDetailVo;
import com.biz.primus.model.coupon.vo.couponType.CouponTypeVo;
import com.biz.primus.model.coupon.vo.couponType.UpdateCouponTypeInfoReqVo;
import com.biz.primus.ms.coupon.dao.ro.CouponRo;
import java.util.List;

/**
 * CouponTypeService
 *
 * @author david-liu
 */
public interface CouponTypeService {

    Boolean createCouponType(CouponTypeVo couponTypeVo);

    SpringPageVO<CouponTypeDetailVo> couponTypes(String couponTypeName, int page, int pageSize);

    Boolean updateCouponType(Long couponTypeId, CouponTypeVo couponTypeVo);

    Boolean deleteCouponType(Long couponTypeId, String deleteUser);

    Boolean updateCouponTypeBaseInfo(Long couponTypeId, UpdateCouponTypeInfoReqVo reqVo);

    Boolean updateCouponTypeEnableStatus(List<Long> couponTypeIds, Boolean status);

    Boolean appendCouponTypeIssuedCount(AppendCouponTypeIssuedCountVo vo);

    List<CouponRo> generateToBeFetchedCoupons(Long couponTypeId, Integer totalCount);
}
